package pl.com.sjap.symulator;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

import pl.com.sjap.agenci.Cyclist;
import pl.com.sjap.agenci.Delay;
import pl.com.sjap.agenci.Fee;
import pl.com.sjap.agenci.Osoba;
import pl.com.sjap.agenci.PedestrianItem;
import pl.com.sjap.agenci.TaxiDriver;
import pl.com.sjap.otherObjects.Pogoda;
import pl.com.sjap.otherObjects.PoraDnia;
import pl.com.sjap.wizualizator.Agent;
import pl.com.sjap.agenci.MyCar;
import CLIPSJNI.Environment;
import CLIPSJNI.MultifieldValue;
import CLIPSJNI.PrimitiveValue;

public class Main extends JFrame {

	/**
	 * @param args
	 */
	static String path = "LogicClips/CyclistAndrzej.clp";
	private JLabel background;
	private JLabel auto;
	private Agent agent;
	private JTextArea console;
	private JScrollPane scroll;

	private JPanel panel;

	public Main(String pathToAgentImg) {
		super();
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setTitle("Swiat MPK");
		setLayout(null);
		agent = new Agent("Ferarri", 810, 118, pathToAgentImg);

		background = new JLabel();
		background.setSize(927, 660);
		background.setIcon(new ImageIcon("images/swiat.png"));
		background.setBounds(0, 0, 927, 660);
		this.setContentPane(background);
		add(agent.getImage());
		console = new JTextArea();
		console.setEditable(false);
		console.setLineWrap(true); // setBounds(930, 10, 200, 190);
		scroll = new JScrollPane(console);
		scroll.setBounds(930, 10, 200, 500);
		// scroll.setAutoscrolls(true);
		add(scroll);

		setSize(1150, 760);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}

	public Agent getAgent() {
		return agent;
	}

	public void logOnConsole(String msg) {
		console.append(msg + "\n");
		console.setCaretPosition(console.getDocument().getLength());
	}

	public static int[] getPrzesuniecie(int skad, int dokad) {
		int[] przesuniecie = new int[2];

		switch (skad) {
		case 0: {
			if (dokad == 1) {
				przesuniecie[0] = -15;
				przesuniecie[1] = 0;
			}
			break;
		}
		case 1: {
			if (dokad == 2) {
				przesuniecie[0] = -17;
				przesuniecie[1] = 0;
			}
			if (dokad == 4) {
				przesuniecie[0] = -16;
				przesuniecie[1] = 17;
			}
			break;
		}
		case 2: {
			if (dokad == 3) {
				przesuniecie[0] = -19;
				przesuniecie[1] = 0;
			}
			if (dokad == 4) {
				przesuniecie[0] = 0;
				przesuniecie[1] = 18;
			}
			break;
		}
		case 3: {
			if (dokad == 5) {
				przesuniecie[0] = 0;
				przesuniecie[1] = 18;
			}
			break;
		}
		case 4: {
			if (dokad == 7) {
				przesuniecie[0] = 0;
				przesuniecie[1] = 19;
			}
			break;
		}
		case 5: {
			if (dokad == 6) {
				przesuniecie[0] = 0;
				przesuniecie[1] = 18;
			}
			break;
		}
		case 6: {
			if (dokad == 7) {
				przesuniecie[0] = 19;
				przesuniecie[1] = 0;
			}
			break;
		}
		}

		return przesuniecie;
	}

	public static void main(String[] args) {
		String[] pogodaWartosci = { "upal", " deszcz", " zwykla", "snieg",
				" mgla" };
		String[] poraWartosci = { "rano", "poludnie", "wieczor", "noc" };
		Osoba os = null;
		Osoba os2 = null;
		Cyclist rower = null;
		TaxiDriver taxi = null;
    PedestrianItem przedmiot = null;
		String additionalFact1 = null;
		String additionalFact2 = null;
		String additionalFact3 = null;
		String additionalFact4 = null;
		String additionalFact5 = null;
		String additionalFact6 = null;
    MyCar mycar = null;
		MyCar mycar2 = null;
		String additionalFact10 = null;
		String additionalFact11 = null;
		String additionalFact12 = null;
		String additionalFact13 = null;
		String pFilename = null;
		
		Delay spoznienie = null;
		Fee napiwek = null;
		Main mainn = null;
		int typPostaci = 15;
		switch (typPostaci) {
		case 0: {
			// konstruujemy dana osobe w kazdym casie.
			os = new Osoba("CarDriver1", "tak", "samochod", 0, 0, 100, 100, 100);
			// (nazwa, pojazd_mechaniczny, rodzaj_pojazdu, polozenie, koszt,
			// szybkosc, bezpieczenstwo, wygoda)
			path = "LogicClips/carDriver1.clp";
			mainn = new Main("images/auto.png");
      mycar = new MyCar("kierowca_ekonomiczny", "ekonomiczny", "kontrola_drogowa");
			additionalFact10 = mycar.addCar();
			additionalFact11 = mycar.addAction();
			pFilename = "CarDriver1";

			break;
		}
		case 1: {
			os = new Osoba("CarDriver2", "tak", "samochod", 0, 0, 100, 100, 100);
			// (nazwa, pojazd_mechaniczny, rodzaj_pojazdu, polozenie, koszt,
			// szybkosc, bezpieczenstwo, wygoda)
			path = "LogicClips/carDriver2.clp";
			mainn = new Main("images/auto.png");
      mycar2 = new MyCar("kierowca_szybki", "szybki", "kontrola_drogowa");
			additionalFact12 = mycar2.addCar();
			additionalFact13 = mycar2.addAction();
			pFilename = "CarDriver2";
			break;
		}
		case 2: {
			os = new Osoba("Cyclist1", "nie", "rower", 0, 0, 60, 60, 80);
			path = "LogicClips/cyclist.clp";
			rower = new Cyclist("BMX", "0", "nie", "dobry", "nie", "nie",
					"zlapal_gume");
			additionalFact1 = rower.addRower();
			additionalFact2 = rower.addAkcja();
			pFilename = "Cyclist1";
			mainn = new Main("images/rower.png");
			break;
		}
		case 3: {
			os = new Osoba("Cyclist2", "nie", "rower", 0, 0, 50, 60, 80);
			path = "LogicClips/CyclistAndrzej.clp";
			rower = new Cyclist("MTB", "2", "nie", "dobry", "nie", "tak",
					"jazda");
			additionalFact1 = rower.addRower();
			additionalFact2 = rower.addAkcja();
			pFilename = "Cyclist2";
			mainn = new Main("images/rower.png");
			break;
		}
		case 4: {
			os = new Osoba("Inspektor", "tak", "mpk", 0, 0, 70, 20, 40);
			path = "LogicClips/mpkInspector1.clp";
			additionalFact1 = "(kontroler (nazwa Kontroler) (ilosc_wystawionych_mandatow 0) (poblazliwosc 40))";
			mainn = new Main("images/tramwaj2.png");
			pFilename = "Inspektor1";
			break;
		}
		case 5: {
			os = new Osoba("Inspektor2", "tak", "mpk", 0, 0, 50, 40, 60);
			path = "LogicClips/mpkInspector2.clp";
			additionalFact1 = "(kontroler (nazwa Kontroler2) (ilosc_wystawionych_mandatow 12) (poblazliwosc 5))";
			pFilename = "Inspektor2";
			mainn = new Main("images/tramwaj.png");
			break;
		}
		case 7: {
			os = new Osoba("pasazer_z_biletem", "tak", "mpk", 0, 15, 70, 100,
					50);
			path = "LogicClips/mpkPassenger1.clp";
			additionalFact1 = "(bilet(kto pasazer_z_biletem)(status tak))";
			pFilename = "Pasazer1";
			mainn = new Main("images/tramwaj.png");
			break;
		}
		case 8: {
			os = new Osoba("pasazer_bezz_biletu", "tak", "mpk", 0, 0, 40, 100,
					50);
			additionalFact1 = "(bilet(kto pasazer_bezz_biletu)(status nie))";
			path = "LogicClips/mpkPassenger2.clp";
			mainn = new Main("images/tramwaj2.png");
			pFilename = "Pasazer2";
			break;
		}
		case 9: {
			os=new Osoba("Spacerowicz", "nie", "brak", 0, 0, 20, 30, 40);
			przedmiot = new PedestrianItem("Spacerowicz", "parasolka", "nie");
			//additionalFact1 = "(przedmiot (posiadacz Spacerowicz) (typ parasolka))";
			additionalFact1 = przedmiot.addItem();
			//additionalFact2 = "()";
			path = "LogicClips/pedestrian1.clp";
			mainn = new Main("images/walker.png");
			pFilename="Pieszy1";
			break;
		}
		case 10: {
			os=new Osoba("Turysta", "nie", "brak", 0, 0, 10, 30, 80);
			przedmiot = new PedestrianItem("Turysta", "noz", "nie");
			//additionalFact1 = "(przedmiot (posiadacz Turysta) (typ noz))";
			additionalFact1 = przedmiot.addItem();
			path = "LogicClips/pedestrian2.clp";
			mainn = new Main("images/walker.png");
			pFilename="Pieszy2";
			break;
		}
		case 11: {
			os = new Osoba("TaxiDriver", "tak", "samochod", 0, 0, 40, 90, 80);
			taxi = new TaxiDriver(4.50, 7.50, 0.0, 8.3, 8.0, 0.0, 0.0, 60.50,
					"BMW", "dobry", "jazda", "tak", "tak");
			// taxi = new TaxiDriver(cena_za_km, cena_startowa, ilosc_km,
			// spalanie_na_100, poziom_baku, ile_km, cena, stan_kasy, marka,
			// stan_techniczny, akcja_kierowcy, czy_uprzejmy, czy_doswiadczony)
			additionalFact1 = taxi.addDriver();

			additionalFact2 = taxi.addAuto();

			additionalFact3 = taxi.addStatystyki();

			additionalFact4 = taxi.addAkcja();
			path = "LogicClips/taxiDriver.clp";
			mainn = new Main("images/taxi.png");
			pFilename = "Taxi1";
			break;
		}
		// String nazwa, String pojazd_mechaniczny,
		// String rodzaj_pojazdu, int polozenie, int koszt, int szybkosc,
		// int bezpieczenstwo, int wygoda)
		case 12: {
			os = new Osoba("TaxiDriver2", "tak", "samochod", 0, 0, 60, 90, 80);
			taxi = new TaxiDriver(5.50, 3.50, 0.0, 5.3, 50.0, 0.0, 0.0, 460.50,
					"Audi", "dobry", "jazda", "tak", "nie");
			// taxi = new TaxiDriver(cena_za_km, cena_startowa, ilosc_km,
			// spalanie_na_100, poziom_baku, ile_km, cena, stan_kasy, marka,
			// stan_techniczny, akcja_kierowcy, czy_uprzejmy, czy_doswiadczony)
			additionalFact1 = taxi.addDriver();

			additionalFact2 = taxi.addAuto();

			additionalFact3 = taxi.addStatystyki();

			additionalFact4 = taxi.addAkcja();
			path = "LogicClips/TaxiDriverAndrzej.clp";
			mainn = new Main("images/taxi.png");
			pFilename = "Taxi2";
			break;
		}
		// case 13: {
		// os=new Osoba("taxiPassenger", "tak", "samochod", 0, 0, 50, 90, 80);
		// path = "LogicClips/taxiDriver.clp";
		// additionalFact1 = "(dane_pasazera (zawartosc_portfela 150.37))";
		// additionalFact2 = "(akcja_pasazera(typ_akcji jazda))";
		// pFilename="PasazerTaxi1";
		//
		// mainn = new Main("images/taxi.png");
		// break;
		// }
		
		case 14: {
			os=new Osoba("Uczen", "nie", "brak", 0, 0, 15, 45, 60);
			przedmiot = new PedestrianItem("Uczen", "odblask", "nie");
			//additionalFact1 = "(przedmiot (posiadacz Turysta) (typ noz))";
			additionalFact1 = przedmiot.addItem();
			path = "LogicClips/Pedestrian3.clp";
			mainn = new Main("images/walker.png");
			pFilename="Pieszy3";
			break;
		}
		case 15: {
			os=new Osoba("SpoznionyPasazer", "tak", "samochod", 0, 30, 50, 90, 85);
			//additionalFact1 = "(przedmiot (posiadacz Pieszy) (typ odblask))";
			//additionalFact2 = "()";
			spoznienie = new Delay("nie");
			napiwek = new Fee("SpoznionyPasazer", "20", "bez");
			additionalFact1 = spoznienie.addDelay();
			path = "LogicClips/TaxiPass.clp";
			mainn = new Main("images/taxi.png");
			pFilename="TaxiPass";
			break;
		}
		default: {
			mainn = new Main("images/auto.png");

		}

		}

		// os = new Osoba();
		// os.setAll(bohatercl.get(0));
		int tura = 0;
		System.out.println(os.create());
		StringBuffer buffer = new StringBuffer();
		for (int s = 0; s < poraWartosci.length; s++) {

			PoraDnia poraDnia = new PoraDnia(poraWartosci[s]);
			mainn.logOnConsole("Pora dnia: " + poraWartosci[s]);

			// wybór pogody
			for (int w = 0; w < pogodaWartosci.length; w++) {
				mainn.logOnConsole("Tura: " + tura++);
				Pogoda pogoda = new Pogoda(pogodaWartosci[w]);
				mainn.logOnConsole("Pogoda : " + pogodaWartosci[w]);
				try {
					Environment clipse = new Environment();
					clipse.load("LogicClips/newWorld.clp");
					clipse.load(path);
					clipse.reset();
					os.setPolozenie(0);
					clipse.assertString(os.create());
					if (os2 != null) {
						os2.setPolozenie(0);
						clipse.assertString(os2.create());
					}

					clipse.assertString(pogoda.toString());
					mainn.getAgent().setPosition(810, 118);

					if (tura % 2 == 1) {
						clipse.assertString("(sygnalizacja (numer 1) (czas_zmiany 6))");
						System.out.println("nieee");
					} else {
						clipse.assertString("(sygnalizacja (numer 1) (czas_zmiany 6)(swiatlo czerwone))");
						System.out.println("Taaaak");
					}

					clipse.assertString(poraDnia.toString());
					if (additionalFact1 != null)
						clipse.assertString(additionalFact1);
					if (additionalFact2 != null)
						clipse.assertString(additionalFact2);
					if (additionalFact3 != null)
						clipse.assertString(additionalFact3);
					if (additionalFact4 != null)
						clipse.assertString(additionalFact4);
					if (additionalFact5 != null)
						clipse.assertString(additionalFact5);
					if (additionalFact6 != null)
						clipse.assertString(additionalFact6);
            if (additionalFact10!=null)
						clipse.assertString(additionalFact10);
						if (additionalFact11!=null)
						clipse.assertString(additionalFact11);
						if (additionalFact12!=null)
						 clipse.assertString(additionalFact12);
						if (additionalFact13!=null)
							clipse.assertString(additionalFact13);

					MultifieldValue bohatercl = (MultifieldValue) clipse
							.eval("(find-all-facts ((?f osoba)) TRUE)");

					Osoba kopia = null;

					buffer.append("Pogoda : " + pogodaWartosci[w] + "\n");
					buffer.append("Pora dnia: " + poraWartosci[s] + "\n");
					while (true) {
						clipse.run(1);
						bohatercl = (MultifieldValue) clipse
								.eval("(find-all-facts ((?f osoba)) TRUE)");

						kopia = new Osoba();
						kopia.setAll(bohatercl.get(0));
						if (os.getBezpieczenstwo() != kopia.getBezpieczenstwo()) {
							if (os.getBezpieczenstwo() > kopia
									.getBezpieczenstwo())
								mainn.logOnConsole("Bezpieczeñstwo bohatera spada do poziomu: "
										+ kopia.getBezpieczenstwo());
							else
								mainn.logOnConsole("Bezpieczeñstwo bohatera wzrasta do poziomu: "
										+ kopia.getBezpieczenstwo());

						}
						if (os.getKoszt() != kopia.getKoszt()) {
							if (os.getKoszt() > kopia.getKoszt())
								mainn.logOnConsole("Koszt przejazdu bohatera spada do poziomu: "
										+ kopia.getKoszt());
							else
								mainn.logOnConsole("Koszt przejazdu bohatera wzrasta do poziomu: "
										+ kopia.getKoszt());

						}
						if (os.getPolozenie() != kopia.getPolozenie()) {

							mainn.logOnConsole("Polozenie  bohatera zmienia sie na pozycje: "
									+ kopia.getPolozenie());

						}
						if (os.getSzybkosc() != kopia.getSzybkosc()) {
							if (os.getSzybkosc() > kopia.getSzybkosc())
								mainn.logOnConsole("Szybkosc bohatera spada do poziomu: "
										+ kopia.getSzybkosc());
							else
								mainn.logOnConsole("Szybkosc przejazdu bohatera wzrasta do poziomu: "
										+ kopia.getSzybkosc());

						}
						if (os.getWygoda() != kopia.getWygoda()) {
							if (os.getWygoda() > kopia.getWygoda())
								mainn.logOnConsole("Wygoda przejazdu bohatera spada do poziomu: "
										+ kopia.getWygoda());
							else
								mainn.logOnConsole("Wygoda przejazdu bohatera wzrasta do poziomu: "
										+ kopia.getWygoda());

						}
						if (typPostaci == 0) {
							buffer.append("\n"+mycar.getAboutAction(clipse)+"\n");
							buffer.append("\n"+mycar.getAboutCar(clipse));
							if(tura == 2)
							{
								mycar.setAction("kontrola_drogowa");
								os.setKoszt(100);
								//System.out.println(os.getKoszt());
								buffer.append("\n"+mycar.addAction());
								//buffer.append(mycar.addCar());
								additionalFact10 = mycar.addCar();
								additionalFact11 = mycar.addAction();
								//buffer.append(mycar.getAboutCar(clipse));
								//buffer.append(mycar.getAboutAction(clipse));
								//mycar.setAction("start");
								
							}
							if(tura == 4)
							{
								mycar.setAction("kontrola_drogowa");
								os.setKoszt(100);								
								buffer.append("\n"+mycar.addAction());
								additionalFact10 = mycar.addCar();
								additionalFact11 = mycar.addAction();
								//buffer.append(mycar.getAboutCar(clipse));
								//buffer.append(mycar.getAboutAction(clipse));
								//mycar.setAction("start");								
							}
							else
							{
								
							}
						}
						else if(typPostaci==1)
							{
								buffer.append("\n"+mycar2.getAboutAction(clipse)+"\n");
								buffer.append("\n"+mycar2.getAboutCar(clipse));
								if(tura == 7)
								{
									mycar2.setAction("kontrola_drogowa");
									os.setKoszt(100);
									//System.out.println(os.getKoszt());
									buffer.append("\n"+mycar2.addAction());
									//buffer.append(mycar.addCar());
									additionalFact12 = mycar2.addCar();
									additionalFact13 = mycar2.addAction();
									//buffer.append(mycar.getAboutCar(clipse));
									//buffer.append(mycar.getAboutAction(clipse));
									//mycar.setAction("start");
									
								}
								if(tura == 13)
								{
									mycar2.setAction("kontrola_drogowa");
									os.setKoszt(100);								
									buffer.append("\n"+mycar2.addAction());
									additionalFact12 = mycar2.addCar();
									additionalFact13 = mycar2.addAction();
									//buffer.append(mycar.getAboutCar(clipse));
									//buffer.append(mycar.getAboutAction(clipse));
									//mycar.setAction("start");								
								}

							}
                  else if (typPostaci == 2) {
							buffer.append(rower.getAboutAkcja(clipse) + "\n");
							buffer.append(rower.getAboutRower(clipse) + "\n");
							if (tura == 1) {
								rower.setAkcja_rowerzysty("jazda");
								rower.setRower_ilosc_blotnikow("0");
								rower.setRower_zapsowa_dentka("tak");
								additionalFact1 = rower.addRower();
								additionalFact2 = rower.addAkcja();
							}
							if (tura == 7) {
								rower.setAkcja_rowerzysty("zlapal_gume");
								rower.setRower_ilosc_blotnikow("0");
								rower.setRower_zapsowa_dentka("tak");
								additionalFact1 = rower.addRower();
								additionalFact2 = rower.addAkcja();
							}
							if (tura == 11) {
								rower.setAkcja_rowerzysty("zlapal_gume");
								rower.setRower_ilosc_blotnikow("0");
								rower.setRower_zapsowa_dentka("nie");
								additionalFact1 = rower.addRower();
								additionalFact2 = rower.addAkcja();
							}
						} else if (typPostaci == 3) {
							buffer.append(rower.getAboutAkcja(clipse) + "\n");
							buffer.append(rower.getAboutRower(clipse) + "\n");
							//

						} else if (typPostaci == 4) {

						} else if (typPostaci == 5) {

						} else if (typPostaci == 6) {

						} else if (typPostaci == 7) {

						} else if (typPostaci == 8) {

						} else if (typPostaci == 9) {
              buffer.append(przedmiot.getAboutItem(clipse)+"\n");
						} else if (typPostaci == 10) {
              buffer.append(przedmiot.getAboutItem(clipse)+"\n");
						} else if (typPostaci == 11) {
							buffer.append(taxi.getAboutDriver(clipse));
							buffer.append(taxi.getAboutAuto(clipse));
							buffer.append(taxi.getAboutAkcja(clipse));
							buffer.append(taxi.getAboutStatystyki(clipse));

//							additionalFact1 = taxi.addDriver();
//
//							additionalFact2 = taxi.addAuto();
//
//							additionalFact3 = taxi.addStatystyki();
//
//							additionalFact4 = taxi.addAkcja();
						} else if (typPostaci == 12) {
							buffer.append(taxi.getAboutDriver(clipse));
							buffer.append(taxi.getAboutAuto(clipse));
							buffer.append(taxi.getAboutAkcja(clipse));
							buffer.append(taxi.getAboutStatystyki(clipse));
//							additionalFact1 = taxi.addDriver();
//
//							additionalFact2 = taxi.addAuto();
//
//							additionalFact3 = taxi.addStatystyki();
//
//							additionalFact4 = taxi.addAkcja();

						} else if (typPostaci == 13) {

						} else if (typPostaci == 14)
						{
							buffer.append(przedmiot.getAboutItem(clipse)+"\n");
						}
						
						else if (typPostaci == 15)
						{
							
							if (tura ==1 || tura ==3 || tura ==6)
							{
									
								napiwek.changeNapiwek(Integer.toString(10*tura), clipse);
								spoznienie.setSprawdz("tak");
								spoznienie.addDelay();
								
																
							}
							else 
							{
								spoznienie.setSprawdz("nie");
								spoznienie.addDelay();
							}
							buffer.append(napiwek.getAboutFee(clipse)+"\n");
							buffer.append(spoznienie.getAboutDelay(clipse)+"\n");
							
						}
						
						// MultifieldValue pogoda = (MultifieldValue) clipse
						// .eval("(find-all-facts ((?f pogoda)) TRUE)");
						// MultifieldValue swiatla = (MultifieldValue) clipse
						// .eval("(find-all-facts ((?f sygnalizacja)) TRUE)");
						// MultifieldValue przejazdy = (MultifieldValue) clipse
						// .eval("(find-all-facts ((?f polaczenie)) TRUE)");

						// mainn.logOnConsole("Pogoda: "
						// + pogoda.get(0).getFactSlot("typ"));
						// for (int i = 0; i < swiatla.size(); i++) {
						// mainn.logOnConsole(swiatla.get(i).getFactSlot(
						// "numer")
						// + "kolor: "
						// + swiatla.get(i).getFactSlot("swiatlo"));
						// }
						// for (int i = 0; i < przejazdy.size(); i++) {
						//
						// mainn.logOnConsole(przejazdy.get(i).getFactSlot(
						// "skad")
						// + "do: "
						// + przejazdy.get(i).getFactSlot("dokad")
						// + " czynne: "
						// + przejazdy.get(i).getFactSlot("czynne"));
						// }

						// MultifieldValue czas = (MultifieldValue) clipse
						// .eval("(find-all-facts ((?f pora_dnia)) TRUE)");
						//
						// mainn.logOnConsole("Pogoda: "
						// + czas.get(0).getFactSlot("czas"));

						String evalStr = "(find-all-facts ((?f osoba)) TRUE)";
						MultifieldValue pv = (MultifieldValue) clipse
								.eval(evalStr);

						PrimitiveValue tNum = pv.get(0)
								.getFactSlot("polozenie");
						MultifieldValue pvs = (MultifieldValue) clipse
								.eval("(find-all-facts ((?f sygnalizacja)) TRUE)");

						for (int ii = 0; ii < pvs.size(); ii++) {
							PrimitiveValue poz = pvs.get(ii).getFactSlot(
									"numer");
							PrimitiveValue kolor = pvs.get(ii).getFactSlot(
									"swiatlo");
							if (Integer.parseInt(poz.toString()) == os
									.getPolozenie()
									&& kolor.toString().equals("czerwone")) {
								mainn.logOnConsole("Czerwone swiatlo, musze poczekac na zmiane");
								Thread.sleep(10);
								clipse.assertString("(sygnalizacja (numer 1) (czas_zmiany 6)(swiatlo zielone))");

							}
						}
						if (Integer.parseInt(tNum.toString()) != os
								.getPolozenie()) {

							mainn.logOnConsole("Przemieszczenie z "
									+ os.getPolozenie() + "do "
									+ tNum.toString());

							for (int i = 0; i < 14; i++) {
								// System.out.println(os.getPolozenie()+" "+tNum.intValue());
								mainn.getAgent().przesun(
										getPrzesuniecie(os.getPolozenie(),
												tNum.intValue()));
								Thread.sleep(10);
							}
							Thread.sleep(10);
							os.setPolozenie(Integer.parseInt(tNum.toString()));

						}
						System.out.println(os.getPolozenie());
						// System.out.println(tNum.toString());
						// os = kopia;
						buffer.append(kopia.toString());
						if (String.valueOf(os.getPolozenie()).equals("7")) {
							mainn.logOnConsole("Bohater dotarl do celu");
							break;

						}

					}

				} catch (Exception e2) {
					// TODO Auto-generated catch block
					e2.printStackTrace();
				}

			}
		}
		BufferedWriter out;
		try {
			out = new BufferedWriter(new FileWriter(pFilename));
			out.write(buffer.toString());
			out.flush();
			out.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}
